package _13了解JDK8之后的接口;

/*
    目标：了解JDK8之后接口新增的方法

    从JDK8开始，接口中新增了三种非抽象方法。

    1.默认方法
        格式：使用default修饰，权限默认是public
        调用：实现类的对象调用


    2.静态方法：
        格式：使用static修饰，权限默认是public
        调用：使用接口名调用


    3.私有方法（jdk9开始新增）
        私有实例方法:
            使用private修饰
        私有静态方法:
            使用private static修饰
        调用：
            只能在接口中使用，目的是抽取默认方法或者静态方法中的重复代码
 */
public class Demo1 {
    public static void main(String[] args) {
        ImpClass c = new ImpClass();
        c.test();

        InterA.test2();
    }
}


class ImpClass implements InterA{

}

interface InterA{

    public default void test(){
        System.out.println("这是jdk8新增的默认方法");
        method1();
    }

    //私有方法，作用就是抽取多个默认方法中的重复代码
    private void method1(){
        System.out.println("这是jdk9新增的私有成员方法");
    }

    //私有方法，作用就是抽取多个静态方法中的重复代码
    private static void method2(){
        System.out.println("这是jdk9新增的私有静态方法");
    }

    public static void test2(){
        System.out.println("这是jdk8新增的静态方法");
    }

}

